package com.xu.config;

import com.xu.service.OrderService;
import com.xu.utils.DateUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

/**
 * @author anan
 * @create 2022-03-02 20:43
 */
@Component
public class OrderJob {

    @Autowired
    private OrderService orderService;

    /**
     * 使用定时任务关闭超期未支付订单，会存在以下弊端
     * 1、会存在时间差，程序不严谨
     * 2、不支持集群
     *      单机没问题，使用集群后，就会有多个定时任务
     *      解决方案；只使用一台计算机节点，单独用来运行所有的定时任务
     * 3、会对数据库全表搜索，影响数据库性能
     * 定时任务仅仅只适用于小型轻量级项目，传统项目
      */
//    @Scheduled(cron = "0/3 * * * * ? ")
    @Scheduled(cron = "0/3 0 0/1 * * ? ")
    public void autoCloseOrder(){
        System.out.println("执行定时任务，当前时间为：" + DateUtil.getCurrentDateString(DateUtil.DATETIME_PATTERN));
        orderService.closeOrder();
    }
}
